package com.david.course_design.shopping_center.module.lunbotu.service.impl;

import com.david.course_design.shopping_center.module.lunbotu.entity.LunBoTu;
import com.david.course_design.shopping_center.module.lunbotu.mapper.LunBoTuMapper;
import com.david.course_design.shopping_center.module.lunbotu.service.LunBoTuService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

@Service
public class LunBoTuServiceImpl implements LunBoTuService {

    //  依赖注入 dependence injection
    @Resource
    private LunBoTuMapper lunBoTuMapper;

    /**
     * 查询所有的轮播图 并随机返回其中的六张轮播图的信息
     *
     * @return 返回六张轮播图对象的集合
     */
    @Override
    public List<LunBoTu> selectAllLunBoTu() {

        List<LunBoTu> lunBoTuList = lunBoTuMapper.selectAll();

        //  size ： 查询出的所有数据
        int size = lunBoTuList.size();

        //  N ： 需要返回的数据条数
        int N = 6;

        //  返回的结果
        List<LunBoTu> resultList = new ArrayList<>();

        //  创建产生随机数的对象
        Random random = new Random();

        //  开始构建返回的结果集合
        while (resultList.size() != N) {
            //  如果结果集合中的数据条数不足

            //  随机产生下一个对象的下标
            int nextInt = random.nextInt(size);

            //  获取下一个对象
            LunBoTu lunBoTu = lunBoTuList.get(nextInt);

            //  如果对象没有添加过
            if (!resultList.contains(lunBoTu)) {

                //  将对象添加到结果集合中
                resultList.add(lunBoTu);

            } else {
                //  如果当前对象已经添加到了结果集合中,将对象从查出的所有数据中移除

                // lunBoTuList.remove(lunBoTu);

            }

        }

        //  将得到的结果集合返回
        return resultList;
    }
}
